package com.openlogic.api.logic.service;
import java.util.Map;

import javax.validation.constraints.NotNull;

import org.noear.nami.annotation.NamiClient;
import org.noear.nami.annotation.NamiMapping;
import org.noear.solon.annotation.Param;
import org.noear.solon.cloud.annotation.CloudBreaker;
import org.noear.solon.core.handle.Result;

import com.openlogic.common.core.constants.HttpConstant;
import com.openlogic.common.core.constants.ServiceConstant;
import com.openlogic.common.core.web.nami.INamiClientFilter;

import cn.hutool.core.util.StrUtil;

/**
* @ClassName: RemoteRuleModelDeployService
* @Description: 决策引擎的feign接口
* @author weiyongpeng
* @date 2024年7月28日 上午11:40:46
 */
@CloudBreaker("remoteRuleModelDeployService")
@NamiClient(name = ServiceConstant.SERVICE_LOGIC, path = ServiceConstant.PATH_TO_LOGIC_RULE)
public interface RemoteRuleModelDeployService extends INamiClientFilter {
	
	/** 
	* 描述：查询规则列表
	* @Title: listRuleModelInner
	* @param param
	* @param enterpriseId
	* @param sourceName
	* @param source
	* @return
	* @author weiyongpeng
	* @date  2024年8月2日 上午8:45:45
	 */
    @NamiMapping(HttpConstant.HTTP_GET + StrUtil.SPACE + "list")
	public Result<?> listRuleModelInner(@Param Map<String,Object> param);
	
	/**
	* 描述：规则模型调用执行
	* @Title: execuate
	* @param datas
	* @param id
	* @param enterpriseId
	* @param sourceName
	* @param source
	* @return
	* @author weiyongpeng
	* @date  2024年8月2日 上午8:46:56
	 */
	@NamiMapping(HttpConstant.HTTP_GET + StrUtil.SPACE + "/flow/execuate")
	public Result<String> execuateFlow(@Param("datas") String datas, @Param("id") @NotNull String id, @Param("operateNo") String operateNo);
	
	/**
	* 描述：规则树模型调用执行
	* @Title: execuateTree
	* @param datas
	* @param id
	* @param operateNo
	* @param enterpriseId
	* @param sourceName
	* @param source
	* @return
	* @author weiyongpeng
	* @date  2024年10月24日 下午6:55:29
	 */
	@NamiMapping(HttpConstant.HTTP_GET + StrUtil.SPACE + "/tree/execuate")
	public Result<String> execuateTree(@Param("datas") String datas, @Param("id") @NotNull String id, @Param("operateNo") String operateNo);
	
	/**
	* 描述：规则表模型调用执行
	* @Title: execuateTable
	* @param datas
	* @param id
	* @param operateNo
	* @param enterpriseId
	* @param sourceName
	* @param source
	* @return
	* @author weiyongpeng
	* @date  2024年10月24日 下午6:55:29
	 */
	@NamiMapping(HttpConstant.HTTP_GET + StrUtil.SPACE + "/table/execuate")
	public Result<String> execuateTable(@Param("datas") String datas, @Param("id") @NotNull String id, @Param("operateNo") String operateNo);
	
	/**
	* 描述：交叉决策表模型调用执行
	* @Title: execuateCrossTable
	* @param datas
	* @param id
	* @param operateNo
	* @param enterpriseId
	* @param sourceName
	* @param source
	* @return
	* @author weiyongpeng
	* @date  2024年10月24日 下午6:55:29
	 */
	@NamiMapping(HttpConstant.HTTP_GET + StrUtil.SPACE + "/ctable/execuate")
	public Result<String> execuateCrossTable(@Param("datas") String datas, @Param("id") @NotNull String id, @Param("operateNo") String operateNo);
	
	/**
	* 描述：评分卡模型调用执行
	* @Title: execuateScoreCard
	* @param datas
	* @param id
	* @param operateNo
	* @param enterpriseId
	* @param sourceName
	* @param source
	* @return
	* @author weiyongpeng
	* @date  2024年10月24日 下午6:55:29
	 */
	@NamiMapping(HttpConstant.HTTP_GET + StrUtil.SPACE + "/score/execuate")
	public Result<String> execuateScoreCard(@Param("datas") String datas, @Param("id") @NotNull String id, @Param("operateNo") String operateNo);
	
}
